package com.skyd.core.game.td;

import java.util.ArrayList;

import com.skyd.core.common.Point;
import com.skyd.core.game.GamePathfinder;
import com.skyd.core.game.IGameObject;
import com.skyd.core.vector.Vector2DF;

/**
 * 地图接口
 * 
 * @author SkyD
 * 
 */
public interface ITDMap extends IGameObject {
	/**
	 * 获取地图总尺寸
	 * 
	 * @return
	 */
	public Vector2DF getSize();

	/**
	 * 获取单个地图块的标准尺寸
	 * 
	 * @return
	 */
	public Vector2DF getPieceStandardSize();

	/**
	 * 获取地图块数组
	 * 
	 * @return
	 */
	public ITDMapPiece[][] getPieces();
	
	/**
	 * 获取出口地图块列表
	 * 
	 * @return
	 */
	public ArrayList<ITDMapExitPiece> getExitPieces();
	
	/**
	 * 获取指定索引位置的地图块
	 * @param p 索引位置
	 * @return 对应的地图块
	 */
	public ITDMapPiece getPiece(Point p);
	
	/**
	 * 获取游戏世界内指定坐标位置的地图块
	 * @param x 游戏世界中的X坐标
	 * @param y 游戏世界中的Y坐标
	 * @return 对应的地图块
	 */
	public ITDMapPiece getPieceByPosition(float x,float y);

	/**
	 * 获取Pathfinder。 功能注释：寻路者
	 */
	GamePathfinder getPathfinder();
	
	/**
	 * 放置实体到指定位置的地图块中心
	 * @param e 实体
	 * @param xIndex X索引
	 * @param yIndex Y索引
	 */
	public void putEntityTo(ITDEntity e,int xIndex,int yIndex);
}
